
package Framework.Intermediarios;
import Framework.Utilidades.Criterio;
import Framework.Entidades.Materia.AgenteMateria;
import Framework.Entidades.Materia.ImplementacionMateria;
import Framework.Utilidades.CriterioCompuesto;
import Framework.Utilidades.CriterioSimple;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;


public class IntermediarioPersistenciaRelacionalMateria extends IntermediarioPersistenciaRelacional{

    @Override
    public String ArmarConsultaSQLSelectOID(String oid) {
        String select = "SELECT * FROM Materia WHERE OIDMateria = '"
				+ oid + "'";
		return select;        
    }

    @Override
    public String ArmarConsultaSQLSelectCriterio(Criterio criterios) {
        
        String select = "";
		if (criterios instanceof CriterioSimple) {
			CriterioSimple criterioSimple = (CriterioSimple) criterios;
			if (criterioSimple.getValor() == null) {
				select = "SELECT * FROM Materia";
			} else {
				select = "SELECT * FROM Materia WHERE "
						+ criterioSimple.getAtributo() + " "
						+ criterioSimple.getOperador() + " '"
						+ criterioSimple.getValor() + "'";
			}
			return select;
		} else if (criterios instanceof CriterioCompuesto) {
			CriterioCompuesto criterioCompuesto = (CriterioCompuesto) criterios;
			CriterioSimple criterioSimple1 = (CriterioSimple) criterioCompuesto
					.getCriterioCompuesto().get(0);
			String operador = (String) criterioCompuesto.getCriterioCompuesto()
					.get(1);
			CriterioSimple criterioSimple2 = (CriterioSimple) criterioCompuesto
					.getCriterioCompuesto().get(2);
			select = "SELECT * FROM Materia WHERE "
					+ criterioSimple1.getAtributo() + " "
					+ criterioSimple1.getOperador() + " '"
					+ criterioSimple1.getValor() + "' " + operador + " "
					+ criterioSimple2.getAtributo() + " "
					+ criterioSimple2.getOperador() + " '"
					+ criterioSimple2.getValor() + "'";
			return select;
		}
		return select;       
        
    }

    @Override
    public String ArmarConsultaSQLInsert(Object objeto) {
        
        AgenteMateria agenteMateria = (AgenteMateria) objeto;
		String insert = "INSERT INTO Materia (OIDMateria, codMateria, nombreMateria) VALUES ('"
				+ agenteMateria.getOIDMateria()
				+ "', '"
				+ agenteMateria.getCodMateria()
				+ "', '"
				+ agenteMateria.getNombreMateria() + "')";
		return insert; 
    }

    @Override
    public String ArmarConsultaSQLUpdate(Object objeto) {
        
                AgenteMateria agenteMateria = (AgenteMateria) objeto;
		
                String update = "UPDATE Materia SET codMateria = '"
				+ agenteMateria.getCodMateria() + "', nombreMateria = '"
				+ agenteMateria.getNombreMateria() + "'";
		return update;    
    }

    @Override
    public String ArmarConsultaSQLDelete(Object objeto) {
                
                AgenteMateria agenteMateria = (AgenteMateria) objeto;
		String delete = "DELETE FROM Materia WHERE OIDMateria = '"
				+ agenteMateria.getOIDMateria()+ "'";
		return delete;                
                
    }

    @Override
    public ArrayList BuscarObjetosRelacionados(Criterio criterios) {
        return null;
    }

    @Override
    public Object CompletarObjeto(String oid, String clase) {
        return null;
    }

    @Override
    public ArrayList ConvertirRegistroAObjeto(ResultSet resultSet) {
        
        try {
			ArrayList agentes = new ArrayList();
			while (resultSet.next()) {
				ImplementacionMateria implementacionMateria = new ImplementacionMateria();
				AgenteMateria agenteMateria = new AgenteMateria();
				agenteMateria
						.setMateria(implementacionMateria);
				agenteMateria.setOIDMateria(resultSet.getString("OIDEstudiante"));
				agenteMateria.setEsNuevo(false);
				agenteMateria
						.setCodMateria(resultSet.getString("codMateria"));
				agenteMateria.setNombreMateria(resultSet.getString("nombreMateria"));				
				agentes.add(agenteMateria);
			}
			return agentes;
		} catch (SQLException e) {
			Logger.getLogger(
					IntermediarioPersistenciaRelacional.class.getName()).log(
					Level.SEVERE, null, e);
			return null;
		}       
        
    }

    @Override
    public void GuardarObjetosRelacionados(ArrayList objeto) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
}
